﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;
using System.IO;
using System.Security.Cryptography;
using log4net;
namespace QuanLyNhaSach
{
    public partial class frmDangNhap : Form
    {
        //Tao Parttern Seleton
        static frmDangNhap doituong = null;
        private ILog logger;
        sv_QuanLyNhaSach.AdapterClient service = new sv_QuanLyNhaSach.AdapterClient();
        public static frmDangNhap TaoDoiTuong()
        {
            if (doituong == null)
                doituong = new frmDangNhap();
            return doituong;
        }

        public frmDangNhap()
        {
            InitializeComponent();
        }
        
        #region Thông Tin Biến

        public static string hoTenNV_FormDangNhap = "";
        public static string maNV_FromDangNhap = "";
        public static string tenTaiKhoan_FrmDanhNhap = "";
        public static string maNhom_FrmDangNhap = "";
        public static bool Kiemtra = false;
        

        sv_QuanLyNhaSach.AdapterClient xuli = new sv_QuanLyNhaSach.AdapterClient();
        DataSet bang_userNV = null;
        KiemTraBatLoi test_BatLoi;
        #endregion
        
        private void frmDangNhap_Load(object sender, EventArgs e)
        {
            test_BatLoi = new KiemTraBatLoi();
            logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
            try
            {
                //Tao du lieu co san khi Form Load
                txt_taikhoan.Text = "TK0001";
                txt_matkhau.Text = "Admin";
                txt_ngaylamviec.Text = DateTime.Now.ToShortDateString();                
            }
            catch (Exception ex)
            {
                logger.Error("Error: " + ex.Message);
            }

        }

        private bool KiemTraUser(string name, string pass)
        {           
            bang_userNV = new DataSet();            
            try
            {
                bang_userNV.ReadXml(new StringReader(xuli.LayDS_TaiKhoanNhanVien()));
                if (bang_userNV.Tables.Count > 0)
                {
                    for (int i = 0; i < bang_userNV.Tables[0].Rows.Count; i++)
                    {
                        if (name == bang_userNV.Tables[0].Rows[i]["MaTKNV"].ToString().Trim() && pass == bang_userNV.Tables[0].Rows[i]["MatKhau"].ToString().Trim())
                        {
                            maNV_FromDangNhap = bang_userNV.Tables[0].Rows[i][2].ToString().Trim();
                            tenTaiKhoan_FrmDanhNhap = bang_userNV.Tables[0].Rows[i][0].ToString().Trim();
                            maNhom_FrmDangNhap = bang_userNV.Tables[0].Rows[i][1].ToString().Trim();

                            return true;//Tim thay Tai Khoan
                        }
                    }
                }
                
            }
            catch (Exception ex)
            {
                logger.Error("Error: " + ex.Message);
            }
            return false;//Khong tim thay tai khoan
        }        

        private void bt_dangnhap_Click(object sender, EventArgs e)
        {
            logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
            try
            {
                this.Cursor = Cursors.WaitCursor;//Tao vong tròn đợi

                if (txt_taikhoan.Text == "")
                {
                    errorProvider1.SetError(txt_taikhoan, "Tên đăng nhập không được bỏ trống");
                }
                else if (txt_matkhau.Text == "")
                {
                    errorProvider1.SetError(txt_matkhau, "Mật khẩu không được bỏ trống");
                }
                else if (KiemTraUser(txt_taikhoan.Text, test_BatLoi.MahoaPassword(txt_matkhau.Text).Substring(0,10)) == true)
                {
                    Kiemtra = true;
                    //Lay Ho Ten Nhan Vien dang nhap
                    DataSet ds_tam = new DataSet();
                    ds_tam.ReadXml(new StringReader(xuli.selectqueryByText("select hotenNV from NhanVien where MaNV = '" + maNV_FromDangNhap + "' ")));
                    if (ds_tam.Tables.Count > 0)
                        hoTenNV_FormDangNhap = ds_tam.Tables[0].Rows[0][0].ToString();

                    //MessageBox.Show("Đăng Nhập thành công", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);                
                    this.Cursor = Cursors.Default;

                    this.Close();                    
                }
                else
                {
                    //Khi ko co Database nhung van Dang Nhap dc Bang "Admin"
                    if ((txt_taikhoan.Text.Trim() == "admin" && txt_matkhau.Text.Trim() == "123456") || (txt_taikhoan.Text.Trim() == "Admin" && txt_matkhau.Text.Trim() == "123456"))
                    {
                        maNV_FromDangNhap = txt_taikhoan.Text.Trim();
                        tenTaiKhoan_FrmDanhNhap = txt_matkhau.Text.Trim();

                        Kiemtra = true;
                        this.Cursor = Cursors.Default;
                        this.Close();
                        return;
                    }

                    MessageBox.Show("Tài khoản hoặc mật khẩu không đúng! Vui lòng kiểm tra lại.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    Kiemtra = false;
                    this.Cursor = Cursors.Default;
                }
            }
            catch (Exception ex)
            {
                logger.Error("Error: " + ex.Message);
                this.Cursor = Cursors.Default;
            }
        }        

        private void bt_ketthuc_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}